package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class Top_StudentCreate {
	static Top_StudentVO sv = new Top_StudentVO();
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static Scanner sc = new Scanner(System.in);
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static String logId = Top_LoginMain.logIdVO;
	static boolean a = false;
	static boolean b = true;
	
	protected static void createStudent() {
		while ( b ) {
			System.out.print("학생 번호를 입력해 주세요 : ");
			sv.setStd_no( sc.next() );
			a = Top_CheckNo.stdNo(sv.getStd_no(), sv);
			if ( a ) { System.out.println("학생 번호 생성 규칙에 어긋납니다. 다시 확인해주세요");
			} else { 
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.StudentSelectAll1SQL);
					pstmt.setString( 1, sv.getStd_no() );
					rs = pstmt.executeQuery();
					if ( rs.next() ) {
						System.out.println("이미 사용중인 학생 번호입니다. 다시 입력해주세요");
					} else { break; }
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
			}
		}
		while ( b ) {
			System.out.print("학생 비밀번호를 입력해 주세요 : ");
			sv.setStd_pw( sc.next() );
			if ( sv.getStd_pw().equals(sv.getStd_pw())) {
				System.out.println("아이디와 동일한 비밀번호는 사용하실 수 없습니다. 다시 입력해주세요");
			} else { break; }
		}
		System.out.print("학생 이름을 입력해 주세요 : ");
		sv.setStd_name( sc.next() );
		while ( b ) {
			System.out.print("학생 연락처를 입력해 주세요 : ");
			sv.setStd_tel( sc.next() );
			if ( sv.getStd_tel().length() != 10 || sv.getStd_tel().length() != 11 ) {
				System.out.println("연락처 자릿수가 맞지 않습니다. 다시 확인해주세요");
			} else { break; }
		}
		sc = new Scanner(System.in);
		System.out.print("학생 주소를 입력해 주세요 : ");
		sv.setStd_addr( sc.nextLine() );
		sc = new Scanner(System.in);
		sv.setDept_no( sv.getStd_no().substring(2, 4) );
		System.out.println( sv.toString() );
		while ( b ) {
			System.out.print("저장하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.StudentInsertSQL); 
					pstmt.setString( 1, sv.getStd_no());
					pstmt.setString( 2, sv.getStd_pw());
					pstmt.setString( 3, sv.getStd_name());
					pstmt.setString( 4, sv.getStd_tel());
					pstmt.setString( 5, sv.getStd_addr());
					pstmt.setString( 6, sv.getDept_no());
					pstmt.executeUpdate();
					System.out.println("저장되었습니다.");
				} catch ( Exception e) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("작업이 취소되었습니다.");
				System.out.println("학생 관련 업무 화면으로 이동합니다.");
				Top_StudentMain.Top_StudentAdminScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("학생 정보를 추가 등록 하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("학생 정보를 추가 등록합니다.");
				createStudent();
				b = false; break;
			case "N" : case "n" :
				System.out.println("학생 관련 업무 화면으로 이동합니다.");
				Top_StudentMain.Top_StudentAdminScreen();
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}